/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package datos;

import java.util.ArrayList;
import javax.swing.JOptionPane;

/**
 *
 * @author Esteban Puello y Raul Piñeres
 */
public class Arbol {

    public String nombre;
    public ArrayList<String> linea;
    public ArrayList<Arbol> ar;

    public Arbol(String nombre, ArrayList<String> linea, ArrayList<Arbol> ar) {
        this.nombre = nombre;
        this.linea = linea;
        this.ar = ar;
    }

    public void setAr(ArrayList<Arbol> ar) {
        this.ar = ar;
    }

    public void addLinea(String linea) {
        this.linea.add(linea);
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public ArrayList<Arbol> getAr() {
        return ar;
    }

    public ArrayList<String> getLinea() {
        return linea;
    }

    public String getNombre() {
        return nombre;
    }

    public Arbol() {
        this.nombre = "";
        this.ar = new ArrayList<Arbol>();
        this.linea = new ArrayList<String>();
    }

    public ArrayList<String> EliminaPrimero(ArrayList<String> k) {
        k.remove(0);
        return k;
    }

    public Arbol Llenado2(Arbol ar, ArrayList<String> nombres, ArrayList<String> lineas, int k) {
        int i = 0;//k y j, k mantiene el valor total y j mantiene el de cada uno
        do {
            try {
                if (ar.getAr().isEmpty() && k > 1) {
                    ar.ar.add(new Arbol());
                    ar.nombre = nombres.get(0);
                    ar.linea.add(lineas.get(0));
                    this.Llenado2(ar.getAr().get(0), this.EliminaPrimero(nombres), this.EliminaPrimero(lineas), (k - 1));
                    break;
                }
                if (ar.getAr().isEmpty() && k == 1) {
                    ar.nombre = lineas.get(0);
                    break;
                } else if (ar.getNombre().equals(nombres.get(0)) && ar.getLinea().get(i).equals(lineas.get(0))) {
                    ar.getAr().set(i, this.Llenado2(ar.getAr().get(i), this.EliminaPrimero(nombres), this.EliminaPrimero(lineas), (k - 1)));
                    break;
                } else if (ar.getNombre().equals(nombres.get(0)) && !ar.getLinea().get(i).equals(lineas.get(0)) && (i + 1) == ar.getAr().size()) {
                    ar.linea.add(lineas.get(0));
                    ar.ar.add(this.Llenado2(new Arbol(), this.EliminaPrimero(nombres), this.EliminaPrimero(lineas), (k - 1)));
                    break;
                }
            } catch (Exception e) {
            }
            i++;
        } while (i < ar.getAr().size());
        return ar;
    }
}
